package com.reflection.jdkreflect;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 中间类
 */
public class MyInvocationHandler implements InvocationHandler {
	/**
	 * 被代理对象
	 */
	private Object obj;
	public MyInvocationHandler(Object obj){
		this.obj = obj;
	}
	/**
	 * proxy:代理对象，也就是根据真实对象realSubject生成的代理类，这里不是this,因为this是MyInvocationHandler类型
	 * method:被代理对象目前正在被调用的方法
	 * args:被代理对象目前被调用时传递的参数
	 */
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
		if(method.getName().equals("getUserName1")){
			System.out.println("这是代理商的getUserName1");
			return "这是代理商的getUserName1";
		}
		
		Object result = method.invoke(obj, args);
		if(result != null){
			String resultValue = result.toString();
			if(resultValue.contains("猪")){
				return "对不起，不能包含猪";
			}
		}
		return result;
	}
}
